Data from get_nlcd()

Data source: https://www.mrlc.gov/

Data was retrieved using the FedData library, get_nlcd function. The function returns a RasterLayer of NLCD data cropped to a given template study area. In this project, we pulled the impervious surfaces and tree canopy data to then analyze based on different tracts, blocks in various locations around Virginia.

library(tidyverse)
library(leaflet)
library(sp)
library(viridis)
library(raster)
library(knitr)
library(dplyr)
library(kableExtra)

Tree Canopy

Charlottesville Region

cville_tracts <- readRDS("Cville_Tree/cville_tracts.RDS")
cville_blkgps <- readRDS("Cville_Tree/cville_blkgps.RDS")
cville_blocks <- readRDS("Cville_Tree/cville_blocks.RDS")

Tracts

cvl_tracts <- read.csv("Cville_Tree/nlcd_tree_cville_tracts.csv")%>%
  dplyr::select(-c(5,7,8))

cvl_tracts <- cvl_tracts[order(cvl_tracts$TRACTCE), ]
  
kable(cvl_tracts)%>%
  kable_styling(font_size = 10)
STATEFP COUNTYFP TRACTCE GEOID NAMELSAD tree_can
19 51 540 201 51540000201 Census Tract 2.01 32.76820
41 51 540 202 51540000202 Census Tract 2.02 11.58013
42 51 540 302 51540000302 Census Tract 3.02 25.91021
43 51 540 401 51540000401 Census Tract 4.01 34.10494
45 51 540 402 51540000402 Census Tract 4.02 22.95314
44 51 540 501 51540000501 Census Tract 5.01 34.68436
21 51 540 502 51540000502 Census Tract 5.02 59.82563
46 51 540 600 51540000600 Census Tract 6 33.04271
47 51 540 700 51540000700 Census Tract 7 53.04950
48 51 540 800 51540000800 Census Tract 8 47.61878
49 51 540 900 51540000900 Census Tract 9 39.40146
14 51 540 1000 51540001000 Census Tract 10 24.29448
37 51 3 10100 51003010100 Census Tract 101 71.90352
9 51 3 10201 51003010201 Census Tract 102.01 59.63794
8 51 3 10202 51003010202 Census Tract 102.02 54.97607
32 51 3 10300 51003010300 Census Tract 103 57.39112
10 51 3 10401 51003010401 Census Tract 104.01 61.46941
11 51 3 10402 51003010402 Census Tract 104.02 61.50637
34 51 3 10500 51003010500 Census Tract 105 63.73709
50 51 3 10601 51003010601 Census Tract 106.01 44.70170
30 51 3 10602 51003010602 Census Tract 106.02 50.20944
33 51 3 10700 51003010700 Census Tract 107 29.62388
39 51 3 10800 51003010800 Census Tract 108 59.78755
40 51 3 10901 51003010901 Census Tract 109.01 33.77119
24 51 3 10902 51003010902 Census Tract 109.02 71.46157
31 51 3 10903 51003010903 Census Tract 109.03 17.84085
35 51 3 11000 51003011000 Census Tract 110 66.04177
38 51 3 11100 51003011100 Census Tract 111 47.54826
6 51 3 11201 51003011201 Census Tract 112.01 72.63061
7 51 3 11202 51003011202 Census Tract 112.02 68.84397
12 51 3 11301 51003011301 Census Tract 113.01 67.37963
13 51 3 11302 51003011302 Census Tract 113.02 61.29524
5 51 3 11303 51003011303 Census Tract 113.03 48.20600
36 51 3 11400 51003011400 Census Tract 114 67.93056
29 51 65 20101 51065020101 Census Tract 201.01 61.97026
28 51 65 20102 51065020102 Census Tract 201.02 64.89842
23 51 65 20200 51065020200 Census Tract 202 61.53652
22 51 65 20300 51065020300 Census Tract 203 65.79589
20 51 79 30101 51079030101 Census Tract 301.01 67.35107
4 51 79 30102 51079030102 Census Tract 301.02 69.19865
3 51 79 30200 51079030200 Census Tract 302 47.86960
17 51 125 950100 51125950100 Census Tract 9501 76.19516
25 51 109 950100 51109950100 Census Tract 9501 56.51193
16 51 125 950200 51125950200 Census Tract 9502 78.27371
15 51 109 950201 51109950201 Census Tract 9502.01 55.55105
1 51 109 950202 51109950202 Census Tract 9502.02 59.46266
2 51 109 950300 51109950300 Census Tract 9503 56.50907
18 51 125 950300 51125950300 Census Tract 9503 74.95332
27 51 109 950400 51109950400 Census Tract 9504 60.34939
26 51 109 950500 51109950500 Census Tract 9505 61.99446
cville_tracts$tree_can <- cvl_tracts$tree_can


pal <- colorNumeric("plasma", reverse = TRUE, domain = cvl_tracts$tree_can)
cvl_tracts$tree_can <- as.numeric(cvl_tracts$tree_can)
cville_tracts$COUNTYFP <- as.numeric(cville_tracts$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = cville_tracts,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", cvl_tracts$GEOID, "<br>",
                             "Tree Canopy: ", cvl_tracts$tree_can,"<br>",
                             "Tract: ", cvl_tracts$NAMELSAD)) %>%
  addLegend("bottomright", pal = pal, values = cvl_tracts$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m

Blockgroups

cvl_blkgps <- read.csv("Cville_Tree/nlcd_tree_cville_blkgps.csv")%>%
  as.data.frame()

cvl_blkgps <- cvl_blkgps[order(cvl_blkgps$TRACTCE), ]

kable(head(cvl_blkgps))
STATEFP COUNTYFP TRACTCE BLKGRPCE GEOID NAMELSAD tree_can
54 51 540 201 3 5.154e+11 Block Group 3 39.102459
55 51 540 201 1 5.154e+11 Block Group 1 43.246032
89 51 540 201 2 5.154e+11 Block Group 2 15.508475
6 51 540 202 2 5.154e+11 Block Group 2 9.651163
92 51 540 202 3 5.154e+11 Block Group 3 18.833333
108 51 540 202 1 5.154e+11 Block Group 1 8.282908
cville_blkgps$tree_can <- cvl_blkgps$tree_can


pal <- colorNumeric("plasma", reverse = TRUE, domain = cvl_blkgps$tree_can)
cvl_blkgps$tree_can <- as.numeric(cvl_blkgps$tree_can)
cville_blkgps$COUNTYFP <- as.numeric(cville_blkgps$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = cville_blkgps,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", cvl_blkgps$GEOID, "<br>",
                             "Tree Canopy: ", cvl_blkgps$tree_can,"<br>",
                             "Blockgroup: ", cvl_blkgps$NAMELSAD)) %>%
  addLegend("bottomright", pal = pal, values = cvl_blkgps$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m

Blocks

cvl_blocks <- read.csv("Cville_Tree/nlcd_tree_cville_blocks.csv")%>%
  as.data.frame()

kable(head(cvl_blocks))
STATEFP10 COUNTYFP10 TRACTCE10 BLOCKCE10 GEOID10 NAME10 tree_can
51 3 10401 3025 5.100301e+14 Block 3025 74.666667
51 3 10401 3004 5.100301e+14 Block 3004 0.000000
51 3 10401 3005 5.100301e+14 Block 3005 25.907297
51 3 10401 3021 5.100301e+14 Block 3021 46.275294
51 3 10401 3016 5.100301e+14 Block 3016 44.680297
51 3 10401 3019 5.100301e+14 Block 3019 7.082353
# mean_block <- aggregate(cvl_blocks$tree_can, by = list(cvl_blocks$BLOCKCE10), FUN=mean)%>%
  # round(3)

# colnames(mean_block) <- c("Blocks", "Tree_can")

cville_blocks$tree_can <- cvl_blocks$tree_can

pal <- colorNumeric("plasma", reverse = TRUE, domain = cvl_blocks$tree_can)
cvl_blocks$tree_can <- as.numeric(cvl_blocks$tree_can)
cville_blocks$COUNTYFP <- as.numeric(cville_blocks$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = cville_blocks,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", cvl_blocks$GEOID, "<br>",
                             "Tree Canopy: ", cvl_blocks$tree_can,"<br>",
                             "Block: ", cvl_blocks$NAME10)) %>%
  addLegend("bottomright", pal = pal, values = cvl_blocks$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m

Eastern Shore Region

east_tracts <- readRDS("Easternshore_Tree/eastshore_tracts.RDS")
east_blkgps <- readRDS("Easternshore_Tree/eastshore_blkgps.RDS")
east_blocks <- readRDS("Easternshore_Tree/eastshore_blocks.RDS")

Tracts

eastern_tracts <- read.csv("Easternshore_Tree/nlcd_tree_eastshore_tracts.csv")%>%
  as.data.frame()

kable(eastern_tracts)
STATEFP COUNTYFP TRACTCE GEOID NAME NAMELSAD tree_can
51 1 90200 51001090200 902 Census Tract 902 34.5990573
51 1 980200 51001980200 9802 Census Tract 9802 3.4784868
51 1 980100 51001980100 9801 Census Tract 9801 10.7229572
51 1 90400 51001090400 904 Census Tract 904 19.4214221
51 131 990100 51131990100 9901 Census Tract 9901 0.0001823
51 131 930300 51131930300 9303 Census Tract 9303 5.3157668
51 131 930200 51131930200 9302 Census Tract 9302 22.3783674
51 1 90300 51001090300 903 Census Tract 903 24.7063283
51 1 90800 51001090800 908 Census Tract 908 14.9882002
51 1 990200 51001990200 9902 Census Tract 9902 0.0000000
51 1 90600 51001090600 906 Census Tract 906 9.0207283
51 1 990100 51001990100 9901 Census Tract 9901 0.0292864
51 1 90500 51001090500 905 Census Tract 905 21.3959293
51 1 90700 51001090700 907 Census Tract 907 33.1019103
51 131 930100 51131930100 9301 Census Tract 9301 16.2719516
51 1 90100 51001090100 901 Census Tract 901 4.2504623
east_tracts$tree_can <- eastern_tracts$tree_can

pal <- colorNumeric("plasma", reverse = TRUE, domain = eastern_tracts$tree_can)
eastern_tracts$tree_can <- as.numeric(eastern_tracts$tree_can)
east_tracts$COUNTYFP <- as.numeric(east_tracts$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = east_tracts,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", eastern_tracts$GEOID, "<br>",
                             "Tree Canopy: ", eastern_tracts$tree_can, "<br>",
                             "Tract: ", eastern_tracts$NAMELSAD)) %>%
  addLegend("bottomright", pal = pal, values = eastern_tracts$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m

Blockgroups

eastern_blkgps <- read.csv("Easternshore_Tree/nlcd_tree_eastshore_blkgps.csv")%>%
  as.data.frame()

kable(head(eastern_blkgps))
STATEFP COUNTYFP TRACTCE BLKGRPCE GEOID NAMELSAD tree_can
51 1 990100 0 510019901000 Block Group 0 0.0292864
51 1 90800 2 510010908002 Block Group 2 9.9791408
51 1 90400 4 510010904004 Block Group 4 15.0362333
51 1 90400 3 510010904003 Block Group 3 18.6409378
51 1 90800 3 510010908003 Block Group 3 24.5608307
51 1 90300 1 510010903001 Block Group 1 13.8446008
# cvl_tracts <- cvl_tracts[complete.cases(cvl_tracts),]

east_blkgps$tree_can <- eastern_blkgps$tree_can

pal <- colorNumeric("plasma", reverse = TRUE, domain = eastern_blkgps$tree_can)
eastern_blkgps$tree_can <- as.numeric(eastern_blkgps$tree_can)
east_blkgps$COUNTYFP <- as.numeric(east_blkgps$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = east_blkgps,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", eastern_blkgps$GEOID, "<br>",
                             "Tree Canopy: ", eastern_blkgps$tree_can, "<br>",
                             "Blockgroup: ", eastern_blkgps$NAMELSAD)) %>%
  addLegend("bottomright", pal = pal, values = eastern_blkgps$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m

Blocks

eastern_blocks <- read.csv("Easternshore_Tree/nlcd_tree_eastshore_blocks.csv")%>%
  as.data.frame()

kable(head(eastern_blocks))
STATEFP10 COUNTYFP10 TRACTCE10 BLOCKCE10 GEOID10 NAME10 tree_can
51 1 90600 4011 5.100109e+14 Block 4011 54.98551
51 1 90600 4023 5.100109e+14 Block 4023 45.93617
51 1 90700 1011 5.100109e+14 Block 1011 35.00000
51 1 90800 2078 5.100109e+14 Block 2078 0.00000
51 1 90800 2079 5.100109e+14 Block 2079 0.00000
51 1 90600 4048 5.100109e+14 Block 4048 0.00000
east_blocks$tree_can <- eastern_blocks$tree_can

pal <- colorNumeric("plasma", reverse = TRUE, domain = eastern_blocks$tree_can)
eastern_blocks$tree_can <- as.numeric(eastern_blocks$tree_can)
east_blocks$COUNTYFP <- as.numeric(east_blocks$COUNTYFP)
m <- leaflet()%>%
  addTiles()%>%
  addPolygons(data = east_blocks,
              fillColor = ~pal(tree_can),
              weight = 1,
              opacity = 1,
              color = "white",
              fillOpacity = 0.6,
              highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
              popup = paste0("FIPS Code: ", eastern_blocks$GEOID, "<br>",
                             "Tree Canopy: ", eastern_blocks$tree_can, "<br>",
                             "Blocks: ", eastern_blocks$Tree_can)) %>%
  addLegend("bottomright", pal = pal, values = eastern_blocks$tree_can,
            title = "Tree Canopy", opacity = 0.7)
m